#include <iostream>

// C++ 不定参函数

void Print()
{
    std::cout << std::endl;
}

template <typename T, typename ...Args>
void Print(const T &t, Args &&...args)
{
    // 编译时递归式包扩展
    // 当参数包为空时，会调用无参的Print以结束递归

    std::cout << t ;
    Print(std::forward<Args>(args)...); // 完美转发，保证参数的属性一直保持不变
    //if(sizeof...(args) > 0)
    //{
    //    // 参数包大于0，进行解析
    //    // 递归式调用该函数，进行包扩展
    //    Print(std::forward<Args>(args)...);
    //}
    //else
    //{
    //    // 当参数包为空时，转而去调用无参Print
    //    Print();
    //}
}


int main()
{
    Print("111");
    Print("111", "222");
    Print("111", "222", "333");
    return 0;
}